import QtQuick 1.0
import "../WebAccess/HttpAccess.js" as WebAccess
import "../Util/IncSearch.js" as IncSearch
import "../Util/Util.js" as Util

ListModel {
    id: _root

    property bool accessReady: true     //上位で読込みに関するReady状態を指定する
    property bool isReady: /*ready ||*/ accessReady    //状態の合成（最終的にこれを見る）

    property string queryString: ""
    property string prevQueryString: ""

    property int countMax: 1000                     // 保持する最大数
    property int updateCount: 30            // 取得数

    property variant objTwitter: null       // TwitterAPIアクセス用エレメント

    ListElement {
        id_str: ""
        created_at: ""
        text: ""
        from_user: ""
        profile_image_url: ""
        entities: ""
        source: ""
    }

    //最新を取得する
    function recent(){
        if(queryString.length === 0){
        }else{

            if(prevQueryString === queryString){
            }else{
                // 前回と違ったら消す
                clear();
            }

            accessReady = false;
            _twitter.search.search(encodeURIComponent(queryString)
                                   , null, null, null ,null // geo
                                   , 1   // page
                                   , null
                                   , updateCount, null, null, null, true);

            Util.outputDebugString("search start:" + queryString);

            // 前回保存
            prevQueryString = queryString;
        }
    }

    function more(){

    }

    // httpリクエストの応答
    function response(text){
        if(text === undefined){
        }else if(text.length === 0){
        }else{
            var data = eval("(" + text + ")");

            var insert_index = 0;
            var exist = false;
            for(var i=0; i<data.results.length; i++){
                // 重複確認
                exist = false;
                for(var j=0; j<_root.count; j++){
                    var item = _root.get(j);
                    if(item.id_str === data.results[i].id_str){
                        // 同じ
                        exist = true;
                        break;
                    }
                }
                if(!exist){
                    // 重複しなかったので登録
                    insert(insert_index++, data.results[i]);

                    // インクリメンタルサーチ用の登録
                    IncSearch.add(IncSearch.SEARCH_KIND_SCREEN_NAME, data.results[i].from_user);
                    if(data.results[i].entities === undefined){
                    }else if(data.results[i].entities.hashtags === undefined){
                    }else{
                        var tags = data.results[i].entities.hashtags;
                        for(var tag_i=0; tag_i<tags.length; tag_i++){
                            IncSearch.add(IncSearch.SEARCH_KIND_HASH_TAG, tags[tag_i].text);
                        }
                    }
                }
            }
        }
        accessReady = true;
    }


}
